package lbframework.bean.dialog;

import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.Vector;
import javax.swing.JDialog;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JViewport;
import lbframework.bean.calendar.LBCalendar;
import lbframework.bean.comboBox.LBComboBox;
import lbframework.bean.consultaCampo.LBConsultaCampo;
import lbframework.bean.fileChooser.LBFileChooser;
import lbframework.bean.passwordField.LBPasswordField;
import lbframework.bean.textArea.LBTextArea;
import lbframework.bean.textAreaEx.LBTextAreaEx;
import lbframework.bean.textField.LBTextField;

public class LBDialog extends JDialog {

    private Vector<Component> vComponent = null;

    public LBDialog() throws Exception {
        initComponents();
    }

    protected void centralizarForm() throws Exception {
        Dimension ds = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension dw = this.getSize();

        setLocation((ds.width - dw.width) / 2, (ds.height - dw.height) / 2);
    }

    public void finalizar() throws Exception {
    }

    public void sair() throws Exception {
        this.dispose();
    }

    public void setDefaultCursor() {
        this.setCursor(Cursor.getDefaultCursor());
    }

    public void setWaitCursor() {
        this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    }

    public Vector<Component> getCampoObrigatorio() {
        vComponent = new Vector();

        procurarCampo(this.getComponents());

        return vComponent;
    }

    private void procurarCampo(Component[] i_componente) {
        for (int i = 0; i < i_componente.length; i++) {
            Component oComponente = i_componente[i];

            if (oComponente instanceof LBTextField) {
                LBTextField txtCampo = (LBTextField) oComponente;

                if (txtCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof LBTextArea) {
                LBTextArea txtCampo = (LBTextArea) oComponente;

                if (txtCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof LBTextAreaEx) {
                LBTextAreaEx txtCampo = (LBTextAreaEx) oComponente;

                if (txtCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof LBPasswordField) {
                LBPasswordField txtCampo = (LBPasswordField) oComponente;

                if (txtCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof LBComboBox) {
                LBComboBox cboCampo = (LBComboBox) oComponente;

                if (cboCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof LBConsultaCampo) {
                LBConsultaCampo cnsCampo = (LBConsultaCampo) oComponente;

                if (cnsCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof LBFileChooser) {
                LBFileChooser flcCampo = (LBFileChooser) oComponente;

                if (flcCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof LBCalendar) {
                LBCalendar txtCampo = (LBCalendar) oComponente;

                if (txtCampo.isObrigatorio()) {
                    vComponent.add(oComponente);
                }
            } else if (oComponente instanceof JPanel) {
                procurarCampo(((JPanel) oComponente).getComponents());

            } else if (oComponente instanceof JScrollPane) {
                procurarCampo(((JScrollPane) oComponente).getComponents());

            } else if (oComponente instanceof JLayeredPane) {
                procurarCampo(((JLayeredPane) oComponente).getComponents());

            } else if (oComponente instanceof JViewport) {
                procurarCampo(((JViewport) oComponente).getComponents());

            } else if (oComponente instanceof JRootPane) {
                procurarCampo(((JRootPane) oComponente).getComponents());

            } else if (oComponente instanceof JTabbedPane) {
                procurarCampo(((JTabbedPane) oComponente).getComponents());
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
    }// </editor-fold>//GEN-END:initComponents
    // Variables declaration - do not modify//GEN-BEGIN:variables
    // End of variables declaration//GEN-END:variables
}
